package com.ruoyi.training.service;

import java.util.List;
import com.ruoyi.training.domain.ClassStudent;
import com.ruoyi.training.domain.ExamSchedule;
import com.ruoyi.training.dto.MyExamInfo;
import com.ruoyi.training.vo.ClassStudentVO;

/**
 * 班级学员明细Service接口
 *
 * @author WorrilessGo
 * @date 2025-09-24
 */
public interface IClassStudentService
{
    /**
     * 查询班级学员明细
     *
     * @param classStudentId 班级学员明细主键
     * @return 班级学员明细
     */
    public ClassStudent selectClassStudentByClassStudentId(String classStudentId);

    /**
     * 查询班级学员明细列表
     *
     * @param classStudent 班级学员明细
     * @return 班级学员明细集合
     */
    public List<ClassStudent> selectClassStudentList(ClassStudent classStudent);

    /**
     * 新增班级学员明细
     *
     * @param classStudent 班级学员明细
     * @return 结果
     */
    public int insertClassStudent(ClassStudent classStudent);

    /**
     * 修改班级学员明细
     *
     * @param classStudent 班级学员明细
     * @return 结果
     */
    public int updateClassStudent(ClassStudent classStudent);

    /**
     * 批量删除班级学员明细
     *
     * @param classStudentIds 需要删除的班级学员明细主键集合
     * @return 结果
     */
    public int deleteClassStudentByClassStudentIds(String[] classStudentIds);

    /**
     * 删除班级学员明细信息
     *
     * @param classStudentId 班级学员明细主键
     * @return 结果
     */
    public int deleteClassStudentByClassStudentId(String classStudentId);

    /**
     * 根据班级ID查询所有相关的报名信息和学员信息
     * lqx
     * @param trainingClassId 班级ID
     * @return 包含报名信息和学员信息的列表
     */
//    public List<ClassStudentVO> getClassStudents(String trainingClassId);
    /**
     * 根据班级ID查询所有相关的报名信息和学员信息，支持多字段模糊搜索
     * lqx
     * @param trainingClassId 班级ID
     * @param studentName 姓名（模糊搜索）
     * @param phonenumber 手机号码（模糊搜索）
     * @param idNumber 证件编号（模糊搜索）
     * @return 包含报名信息和学员信息的列表
     */
    public List<ClassStudentVO> getClassStudents(
            String trainingClassId,
            String studentName,
            String phonenumber,
            String idNumber);

    /**
     * 通过班级id获取学员id
     * lqx
     * */
    public List<String> selectStudentIdsByClassId(String classId);


    /**
     * 批量进班
     *
     * @param classStudentList 班级学员列表
     * @return 结果
     */
    public int batchJoin(List<ClassStudent> classStudentList);

    /**
     * 批量退班
     *
     * @param classStudentList 班级学员列表
     * @return 结果
     */
    public int batchQuit(List<ClassStudent> classStudentList);

    /**
     * 通过学员id获取学员的考试情况
     * lqx
     */
    public List<MyExamInfo> selectExamInfoByStudentId(String studentId);

    /**
     * 通过学员id获取学员的考试安排
     * lqx
     */
    public List<ExamSchedule> selectExamScheduleByStudentId(String studentId,String trainingClassId);
}
